*****************************************************************************
*																			*
*						Schmutzige Latenzzeiten								*
*																			*
*****************************************************************************


*---------------------------------------------------------------
* Rohzeiten ohne Interviewervalidierung
*---------------------------------------------------------------

fre pre003_rl
gen rohwbtdirty = pre003_rl								
replace rohwbtdirty =. if pre003_rl==9999		
sum rohwbtdirty pre003_rl			

fre pre005_rl
gen rohwabsdirty = pre005_rl
replace rohwabsdirty =. if pre005_rl==9999 | pre005_rl==10000 //Wahlabsicht
sum rohwabsdirty pre005_rl
tab rohwabsdirty

fre pre126_rl
gen rohpiddirty = pre126_rl
replace rohpiddirty =. if pre126_rl==9999		
sum pre126_rl rohpiddirty
tab rohpiddirty

gen rohmipdirty = pre014_rl/zahlerstnennung		//durch Anzahl der Antworten auf "wichtigstes politisches Problem" kontrollieren
replace rohmipdirty = . if pre014_rl==9999

fre pre034_a_rl
gen rohmerkeldirty = pre034_a_rl
replace rohmerkeldirty = . if pre034_a_rl==9999 

fre pre034_b_rl
gen rohsteindirty = pre034_b_rl
replace rohsteindirty = . if pre034_b_rl==9999 



* Zeiten = 0 l�schen
* Solch eien Antwortgeschwindigkeit (unter 75ms) ist 
* unplausibel
foreach var of varlist roh*dirty {
replace `var' = . if `var'==0
}


*----------------------------------------------------------------
* Dirty Basisgeschwindigkeiten �ber L�nge des Interviews
*--------------------------------------------------------------------

fre pre_dauer

* Z�hlen, wie viele Fragen es gab
/*Problem: 
Variablenanzahl ist nicht gleich Fragenanzahl.
Eine Frage kann mehrere Variablen im Datensatz haben z.B. bei Mehrachantworten. 
Andersherum gibt es nat�rlich Variablen, die auf keiner Frage beruhen.
*/

describe pre001-pre129

order pre014 pre016, last 	//String_Variablen ans Ende des Datensatzes verschieben,
							//st�ren beim Z�hlen, lieber numerisches Pendant
							//benutzen
								
								
order pre013_2-pre013_9 /// Regierungserwartung
	pre018a* pre019a* pre020a* /// Issue-Split
	pre014c2-pre014c5 ///		mehrere Nennungen bei "wichtigstes Problem"
	pre016c2-pre016c7 ///		mehrere Nennungen bei "zweitwichtigstes Problem"
	pre038_2-pre038_9 pre038m? ///
	pre042_2-pre042_9 pre042m? ///
	pre046_2-pre046_9 pre046m? ///
	pre050_2-pre050_9 pre050m? ///
	pre052_2-pre052_9 pre052m? ///
	pre054_2-pre054_9 pre054m? ///
	pre056_2-pre056_9 pre056m? ///
	pre058_2-pre058_9 ///
	pre085_2-pre085_9 pre086_2-pre086_9 ///
	pre102, last 			//hier: F�lle, in denen eine
							//Frage mehere Variablen hat, "�berfl�ssige"
							//Variablen verschieben, damit sch�n durchgez�hlt 
							//werden kann
							
describe pre001-pre129, number
return list  	//205 Variablen
				//geht leider nicht automatisiert das Z�hlen

gen quest = 205-38


* Z�hlen, wie viele Fragen ein Individueller Befragter hatte
/* Dazu z�hlen, wie oft es tnz gab */

egen tnz = anycount(pre001-pre129), values(100 101 1000 10000)
replace tnz = tnz - 6 if pre018b_a==101			//die Half-Splits rasuz�hlen
												//wenn Befragter dort Missing
												//hatte, hatte er die andere
												//Frage
fre tnz		//ganz sch�n viel

gen quest_pers = quest - tnz


* Durchschnittliche Dauer pro Frage
fre pre_dauer
hist pre_dauer if pre_dauer~=9999, percent

gen dirtybasis = pre_dauer/quest_pers if pre_dauer~=9999
hist dirtybasis, percent


*------------------------------------------------------------------
* Ausrei�erbereinigung
*-------------------------------------------------------------------

tab pre_woche

* 3 Standardabweichungen
* Wochenweise
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	foreach week of numlist 31/39 {
		sum `var' if pre_woche==`week'
		gen over`var'`week' = `var'>(r(mean)+3*r(sd)) ///
			 & pre_woche==`week'
		replace over`var'`week' = . if pre_woche==`week' ///
			& `var'==.
		gen under`var'`week' = `var'<(r(mean)-3*r(sd)) ///
			& pre_woche==`week'
		replace under`var'`week' = . if pre_woche==`week' ///
			& `var'==.
	}
}


* Tagesweise

tab pre_tag

foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	forvalues day=1/60 {
		sum `var' if pre_tag==`day'
		gen over`var'd`day' = `var'>(r(mean)+3*r(sd)) ///
			 & pre_tag==`day'
		replace over`var'd`day' = . if pre_tag==`day' ///
			& `var'==.
		gen under`var'd`day' = `var'<(r(mean)-3*r(sd)) ///
			& pre_tag==`day'
		replace under`var'd`day' = . if pre_tag==`day' ///
			& `var'==.
	}
}


* Ausrei�er 2 Standardabweichungen
* evtl. sind 3 Standardabweichungen zu viel des Guten,
* Standardvorgehen: 2 Stadardabweichungen 
* Wochenweise
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	foreach week of numlist 31/39 {
		sum `var' if pre_woche==`week'
		gen over2sd`var'`week' = `var'>(r(mean)+2*r(sd)) ///
			 & pre_woche==`week'
		replace over2sd`var'`week' = . if pre_woche==`week' ///
			& `var'==.
		gen under2sd`var'`week' = `var'<(r(mean)-2*r(sd)) ///
			& pre_woche==`week'
		replace under2sd`var'`week' = . if pre_woche==`week' ///
			& `var'==.
	}
}



* Tagesweise
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	forvalues day=1/60 {
		sum `var' if pre_tag==`day'
		gen over2sd`var'd`day' = `var'>(r(mean)+2*r(sd)) ///
			 & pre_tag==`day'
		replace over2sd`var'd`day' = . if pre_tag==`day' ///
			& `var'==.
		gen under2sd`var'd`day' = `var'<(r(mean)-2*r(sd)) ///
			& pre_tag==`day'
		replace under2sd`var'd`day' = . if pre_tag==`day' ///
			& `var'==.
	}
}



* �ber- und Unterschreiter rauswerfen

foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
gen `var'_out = `var'
gen `var'_2sdout = `var' 
gen `var'_dout = `var'
gen `var'_2sddout = `var'
}

lab var rohwbtdirty_out "Zeit Wahlbeteiligungsabsicht ohne Ausrei�er von wochenweisen Mittelwerten"
lab var rohwabsdirty_out "Zeit Wahlabsicht ohne Ausrei�er von wochenweisen Mittelwerten"
lab var rohpiddirty_out "Zeit PID ohne Ausrei�er von wochenweisen Mittelwerten"

lab var rohwbtdirty_dout "Zeit Wahlbeteiligungsabsicht ohne Ausrei�er von tagesweisen Mittelwerten"
lab var rohwabsdirty_dout "Zeit Wahlabsicht ohne Ausrei�er von tagesweisen Mittelwerten"
lab var rohpiddirty_dout "Zeit PID ohne Ausrei�er von tagesweisen Mittelwerten"


* Wochenweiser Ausschluss

* 3 Standardabweichungen
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	foreach week of numlist 31/39 {
		replace `var'_out = . if over`var'`week'==1 ///
			& pre_woche==`week'
		replace `var'_out = . if under`var'`week'==1 ///
			& pre_woche==`week'
}
}

* 2 Standardabweichungen
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	foreach week of numlist 31/39 {
		replace `var'_2sdout = . if over2sd`var'`week'==1 ///
			& pre_woche==`week'
		replace `var'_2sdout = . if under2sd`var'`week'==1 ///
			& pre_woche==`week'
}
}

* Tagesweise: 3 Standardabweichungen
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	forvalues day=1/60 {
		replace `var'_dout = . if over`var'd`day'==1 ///
			& pre_tag==`day'
		replace `var'_dout = . if under`var'd`day'==1 ///
			& pre_tag==`day'
}
}

* Tagesweise: 2 Standardabweichungen
foreach var of varlist rohwbtdirty-rohsteindirty dirtybasis {
	forvalues day=1/60 {
		replace `var'_2sddout = . if over2sd`var'd`day'==1 ///
			& pre_tag==`day'
		replace `var'_2sddout = . if under2sd`var'd`day'==1 ///
			& pre_tag==`day'
}
}




fsum *_out    //Fallzahlen scheinen immer noch okay zu sein
sum *_2sddout


*-------------------------------------------------------------------
*	Residuenlatenzindex 							
*------------------------------------------------------------------

* Wochenweise & 2 Standardabweichungen
reg rohwbtdirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_wbt_2sdout, residuals

reg rohwabsdirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_wabs_2sdout, residuals

reg rohpiddirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_pid_2sdout, residuals

reg rohmipdirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_mip_2sdout, residuals

reg rohmerkeldirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_merkel_2sdout, residuals

reg rohsteindirty_2sdout dirtybasis_2sdout [pw=wei_ipf1w]
predict dirty_latenz_stein_2sdout, residuals


* Tagesweise & 2 Standardabweichungen
reg rohwbtdirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_wbt_2sddout, residuals

reg rohwabsdirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_wabs_2sddout, residuals

reg rohpiddirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_pid_2sddout, residuals

reg rohmipdirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_mip_2sddout, residuals

reg rohmerkeldirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_merkel_2sddout, residuals

reg rohsteindirty_2sddout dirtybasis_2sddout [pw=wei_ipf1w]
predict dirty_latenz_stein_2sddout, residuals


* Wochenweise & 3 Standardabweichungen
reg rohwbtdirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_wbt_out, residuals

reg rohwabsdirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_wabs_out, residuals

reg rohpiddirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_pid_out, residuals

reg rohmipdirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_mip_out, residuals

reg rohmerkeldirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_merkel_out, residuals

reg rohsteindirty_out dirtybasis_out [pw=wei_ipf1w]
predict dirty_latenz_stein_out, residuals


* Tagesweise & 3 Standardabweichungen
reg rohwbtdirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_wbt_dout, residuals

reg rohwabsdirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_wabs_dout, residuals

reg rohpiddirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_pid_dout, residuals

reg rohmipdirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_mip_dout, residuals

reg rohmerkeldirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_merkel_dout, residuals

reg rohsteindirty_dout dirtybasis_dout [pw=wei_ipf1w]
predict dirty_latenz_stein_dout, residuals



*----------------------------------------------------------------
* Datensatz zum Zusammenf�gen mit anderen Jahren vorbereiten
*-----------------------------------------------------------------


keep lfdn wei_ipf1w week_count-rohsteindirty ///
	dirtybasis rohwbtdirty_out-dirty_latenz_stein_dout
	
foreach var of varlist wei_ipf1w week_count-rohsteindirty ///
	dirtybasis rohwbtdirty_out-dirty_latenz_stein_dout {
rename `var' `var'09
}

gen year = 2009

save "2009/2009_dirty.dta", replace



